home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / CC_C / 0574.ZIP / FGETS.ASM < prev    next >
Assembly Source File  |  1986-11-21  |  751b  |  50 lines

  1. include compiler.inc
  2.  
  3.     ttl    FGETS, 1.05, 11-21-86, clr
  4.  
  5. ;corrected version, meets standard conventions now.
  6.  
  7. lf    equ    0ah
  8.  
  9.     dseg
  10.     cseg
  11.  
  12.     xtfs    <fgetc,$strhand>
  13.  
  14.     procdef    fgets, <<bfr, ptr>, <buflen, word>, <strm, ptr>>
  15.  
  16. ;    locs    <<bfbeg, ptr>>
  17.     pushreg
  18.  
  19.     ldptr    di, bfr            ;else just lay it down
  20.     pushptr    strm            ;move outside the loop
  21. fgs1:
  22.     dec    buflen
  23.     js    fgs2            ;buffer is full, force end
  24.     callit    fgetc ; stream pointer pushed outside the loop
  25.  
  26.     inc    ax            ;if was EOF...
  27.     jz    fgs3            ;return NULL
  28.  
  29.     dec    ax            ;get char back
  30.  
  31.     cld
  32.     stosb
  33.     cmp    ax, lf            ;then check for LF
  34.     jne    fgs1            ;no, go back for another
  35.  
  36. fgs2:
  37.     xor    ax, ax
  38.     cld
  39.     stosb
  40.     clc
  41. fgs4:
  42.     retptrm    bfr
  43. fgs3:
  44.     stc
  45.     jmp    short fgs4
  46.  
  47.     pend    fgets
  48.  
  49.     finish
  50.